特点
- Http/2支持多路复用
- 采用连接池减少请求延迟
- 支持GZip压缩
- 支持websocket
- 多ip切换(服务有多个IP地址对应,OkHttp会在首次连接失败的时候尝试其他地址。)
- 缓存Response以减少网络去做完全重复的请求
- 它会静默从常见的连接问题中恢复
- OkHttp使用现代的TLS features (SNI, ALPN) 来初始化连接, 并在握手失败的时候倒回到TLS 1.0
- OkHttp还用了Okio来做快速I/O和可调整大小的buffer
超时
okhttp超时分为连接超时、读取超时、写入超时
1 | OkHttpClient okHttpClient = new OkHttpClient.Builder() |
Cookie保持
Cookie的保存也提供了快捷方式,当然也可以通过拦截器自己实现
1 | OkHttpClient okHttpClient = new OkHttpClient.Builder() |
- 使用张鸿洋大神开源的OkHttpUtils课轻松实现cookie保持
1 |
拦截器
- okhttp3的实现使用的是链式的拦截器,同时也开放了自定义拦截器接口
1 | //打印请求Log |
1 | OkHttpClient okHttpClient = new OkHttpClient.Builder() |
Https
- okhttp3完全支持https,只要设置好证书即可
1 | OkHttpClient okHttpClient = new OkHttpClient.Builder() |
- 使用OkHttpUtils
1 | InputStream inputStream = null; |
GET
1 | //创建OkHttpClient |
POST
1 |
Websocket
- okhttp3支持websocket,如果不了解请自行搜索,简易推送,轮训都可以使用。
- websocket协议首先会发起http请求,握手成功后,转换协议保持长连接,类似心跳